Skip to content

mw/com: Add Requirements for the Method extension of Fields#174

Draft
gdadunashvili wants to merge 1 commit intoeclipse-score:mainfrom
gdadunashvili:dadu_additional_requirements_for_fields
Draft

mw/com: Add Requirements for the Method extension of Fields#174
gdadunashvili wants to merge 1 commit intoeclipse-score:mainfrom
gdadunashvili:dadu_additional_requirements_for_fields

Conversation

@gdadunashvili
Copy link
Member

issue:

@gdadunashvili gdadunashvili marked this pull request as draft March 7, 2026 08:46
@gdadunashvili gdadunashvili force-pushed the dadu_additional_requirements_for_fields branch from b888aa4 to e54d974 Compare March 10, 2026 11:02
@LittleHuba LittleHuba force-pushed the dadu_additional_requirements_for_fields branch from e54d974 to 30f7e7d Compare March 11, 2026 08:36
@castler castler force-pushed the dadu_additional_requirements_for_fields branch from 30f7e7d to 52bafd0 Compare March 16, 2026 21:27
}

ScoreReq.CompReq GetMethodSignature {
description=""" The signature of the `Get` method shall be: `bmw::Result<MethodReturnTypePtr<SampleDataType>> Get()`."""
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description=""" The signature of the `Get` method shall be: `bmw::Result<MethodReturnTypePtr<SampleDataType>> Get()`."""
description=""" The signature of the `Get` method shall be: `score::Result<MethodReturnTypePtr<SampleDataType>> Get()`."""

}

ScoreReq.CompReq SetMethodSignature {
description=""" The signature of the `Set` method shall be: `bmw::Result<MethodReturnTypePtr<SampleDataType>> Set(MethodInArgPtr<SampleDataType>)`"""
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description=""" The signature of the `Set` method shall be: `bmw::Result<MethodReturnTypePtr<SampleDataType>> Set(MethodInArgPtr<SampleDataType>)`"""
description=""" The signature of the `Set` method shall be: `score::Result<MethodReturnTypePtr<SampleDataType>> Set(MethodInArgPtr<SampleDataType>)`"""

}

ScoreReq.CompReq AllocateMethodSignature {
description="""The signature of the `Allocate()` method shall be: `bmw::Result<impl::MethodInArgPtr<SampleDataType>> Allocate()`."""
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description="""The signature of the `Allocate()` method shall be: `bmw::Result<impl::MethodInArgPtr<SampleDataType>> Allocate()`."""
description="""The signature of the `Allocate()` method shall be: `score::Result<impl::MethodInArgPtr<SampleDataType>> Allocate()`."""

}

ScoreReq.CompReq ZeroCopySetMethodSignature {
description="""The signature of the `Set` method shall be: `bmw::Result<MethodReturnTypePtr<SampleDataType>> Set(MethodInArgPtr<SampleDataType>)`"""
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description="""The signature of the `Set` method shall be: `bmw::Result<MethodReturnTypePtr<SampleDataType>> Set(MethodInArgPtr<SampleDataType>)`"""
description="""The signature of the `Set` method shall be: `score::Result<MethodReturnTypePtr<SampleDataType>> Set(MethodInArgPtr<SampleDataType>)`"""



ScoreReq.CompReq RegisterGetHandlerSignature {
description=""" The signature of the `RegisterGetHandler` method shall be: `bmw::ResultBlank RegisterGetHandler(GetHandlerType)`"""
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description=""" The signature of the `RegisterGetHandler` method shall be: `bmw::ResultBlank RegisterGetHandler(GetHandlerType)`"""
description=""" The signature of the `RegisterGetHandler` method shall be: `score::ResultBlank RegisterGetHandler(GetHandlerType)`"""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my view, the requirement for RegisterGetHandler on the Skeleton side is not needed. The RegisterGetHandler function will not be exposed to the user, as it is managed internally by LoLa. Therefore, it should be considered an implementation detail.

}

ScoreReq.CompReq RegisterSetHandlerSignature {
description=""" The signature of the `RegisterSetHandler` method shall be: `bmw::ResultBlank RegisterSetHandler(SetHandlerType)`"""
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description=""" The signature of the `RegisterSetHandler` method shall be: `bmw::ResultBlank RegisterSetHandler(SetHandlerType)`"""
description=""" The signature of the `RegisterSetHandler` method shall be: `score::ResultBlank RegisterSetHandler(SetHandlerType)`"""

}

ScoreReq.FeatReq Field {
description = "A field is part of a communication interface and has a name and a data type, as wall as special getter and setter methods. The producer can assign a value to it. Consumers can subscribe to value-changed fields of the element or poll unseen, cached fields. Consumers can also retrieve the current value of the field through its getter or set a new value to it through the setter method."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A field is a component of a communication interface and is defined by a name and a data type, along with dedicated getter and setter methods. The producer has the ability to assign a value to the field. Consumers can either subscribe to receive notifications when the field’s value changes or poll the cached values of fields that have not yet been seen. Additionally, consumers can retrieve the current value of the field using the getter method or update the field’s value through the setter method.


ScoreReq.CompReq NoSupportForNotificationInSharedMemoryBinding {

description = """For the field implementation in our shared-memory-binding implementation, we shall ignore the setting for "support for a notification" specified in [[FieldGetAndSetInterfaceDefinition]]. Since, in the shared-memory-binding implementation support for an update notification does not imply any performance drawbacks, opposed to e.g. a network binding."""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the field implementation in the shared-memory-binding implementation, the setting for "support for a notification" specified in [[FieldGetAndSetInterfaceDefinition]] shall be ignored. This is because, in the shared-memory-binding implementation, support for update notifications does not imply any performance drawbacks, unlike, for example, a network binding.



ScoreReq.CompReq GetMethodReturnValue {
description="""It shall return the field value, which has been updated last by the provider in success case in the form of a `MethodReturnTypePtr` to the value."""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It shall return the provider's most recently updated field value as a MethodReturnTypePtr upon success.

}

ScoreReq.CompReq SetMethodReturnValue {
description="""`Set` method shall return the field value, which has been updated last by the provider in success case in the form of a MethodReturnTypePtr to the value."""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Set method shall return the provider’s latest updated field value as a MethodReturnTypePtr on success

section "Field_member_representation_at_the_Skeleton_side" {

ScoreReq.CompReq RegisterGetHandlerOnlyIfEnabledInInterfaceDefinition {
description="""It shall provide a public `RegisterGetHandler` method only in the case, that 'support for a Get()' has been enabled in the underlying interface definition (see [[FieldGetAndSetInterfaceDefinition]])"""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As of the last sync, LoLa handles Get functionality internally.
On a Get call from a proxy, Skeleton returns the latest sample. Has this approach changed?
If not, a public RegisterGetHandler is unnecessary.

}

ScoreReq.CompReq SetHandlerTypeDefinition {
description="""It is mandatory to register a `SetHandler` for a `SkeletonField` instance. If the user has not registered a handler before calling `Offer()` on the enclosing skeleton, the call to `Offer()` shall fail with an error."""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only if Set is enabled in the interface Definition. right?

ScoreReq.CompReq SetHandlerTypeDefinition {
description="""After the user provided `SetHandler` has returned, the (potentially updated) field value has to:
- be stored as the latest value.
- if enabled, notifier for the updated value has to be called to inform subscribers of the field about the updated value.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does if enable means?
where is it enabled?

what if the value is not changed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants